package com.yunhe.merchants.service;

import com.yunhe.common.exception.ArgumentErrorException;
import com.yunhe.merchants.model.DeptPlan;
import com.yunhe.merchants.model.SalesmanPlan;
import com.yunhe.merchants.model.Statistics;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: IPlanService
 * @Description:
 * @author: GongDaCheng
 * @Date: 15:00 2021/4/28
 */
public interface IPlanService {
    /**
     * @Description 新增部门计划
     * @Param List<DeptPlan> deptPlans
     * @Return int
     * @Date 2021/5/11 14:04
     */
    int makeDeptPlan(List<DeptPlan> deptPlans);

    /**
     * @Description 根据年份查询所有部门的所有计划
     * @Param String year
     * @Return List<DeptPlan>
     * @Date 2021/5/11 17:58
     */
    List<DeptPlan> getDeptPlan(String year) throws ArgumentErrorException;

    /**
     * @Description 根据部门id和时间获取对应部门统计数据
     * @Param Long deptId, String type, String year, String quarter, String month
     * @Return Statistics
     * @Date 2021/5/12 9:53
     */
    Statistics deptPlanStatistics(List<Long> deptId, String type, String year, String quarter, String month);

    /**
     * @Description 新增业务员计划
     * @Param List<SalesmanPlan> salesmanPlans
     * @Return int
     * @Date 2021/5/13 17:09
     */
    int makeSalesmanPlan(List<SalesmanPlan> salesmanPlans) throws ArgumentErrorException;

    /**
     * @Description 根据年份查询所有业务员计划（当前登陆人所属部门全部业务员）
     * @Param String year
     * @Return List<SalesmanPlan>
     * @Date 2021/5/14 9:59
     */
    List<SalesmanPlan> getSalesmanPlan(String year) throws ArgumentErrorException;

    /**
     * @Description 根据部门id、业务员id和时间获取对应业务员统计数据
     * @Param Long deptId, Long salesmanId, String type, String year, String quarter, String month
     * @Return Statistics
     * @Date 2021/5/14 11:11
     */
    Statistics salesmanPlanStatistics(Long deptId, Long salesmanId, String type, String year, String quarter, String month);

    /**
     * @Description 园区统计数据
     * @Param String type, String year, String quarter, String month
     * @Return Statistics
     * @Date 2021/5/14 16:01
     */
    Statistics parkPlanStatistics(String type, String year, String quarter, String month) throws ArgumentErrorException;
}
